package main

import (
	"bufio"
	"encoding/base64"
	"fmt"
	"io/ioutil"
	"log"
	"os"
	"strconv"
)

// Base64转图片
func Base64ToImage(base64Str, outputPath string) error {
	data, err := base64.StdEncoding.DecodeString(base64Str)
	if err != nil {
		return err
	}
	return ioutil.WriteFile(outputPath, data, 0644)
}

// readAndPrintFile 读取并打印文件的行数和内容
func readAndPrintFile(filePath string) {
	// 打开文件
	file, err := os.Open(filePath)
	if err != nil {
		log.Fatalf("无法打开文件: %v", err)
	}
	defer file.Close()

	// 创建一个Scanner来逐行读取文件
	scanner := bufio.NewScanner(file)
	scanner.Buffer(make([]byte, 6*1024*1024), 1024*1024*4096) // 设置缓冲区大小为1MB
	lineCount := 0

	// 逐行读取文件并打印
	for scanner.Scan() {
		lineCount++
		lineCountStr := strconv.Itoa(lineCount)
		// fmt.Println(lineCountStr+".jpg", scanner.Text())
		Base64ToImage(scanner.Text(),lineCountStr+".jpg")
	}

	// 检查扫描过程中是否发生错误
	if err := scanner.Err(); err != nil {
		log.Fatalf("读取文件时发生错误: %v", err)
	}

	// 打印行数
	fmt.Printf("文件共有 %d 行。\n", lineCount)
}

func main() {
	// 替换为你的文件路径
	filePath := os.Args[1]
	readAndPrintFile(filePath)
}
